Nowadays, various types of devices are used which are capable of storing data. One of the requirements for a device storing data is faster data access.
For example, a storage device is provided with a memory called a “cache” which allows relatively high-speed access, and reads not-yet-requested data set ahead from the storage device to store it in the cache. When a request is made for a data set which has been read ahead, the requested data set is read from the cache and sent to the requestor, whereby a faster data response is achieved.
For example, there is a proposal for a disk storage, when the request from the host is a sequential read, to read ahead the data following the request data on the disk storage into the cache buffer after transferring the request data to the host. In the proposal, the number of times all the target data requested to be read existed in the cache buffer (full-hit count) and the number of times a part of the target data existed in the cache buffer (half-hit count) are recorded and compared. When the half-hit count is larger, the size of read-ahead space is increased based on an assumption that the size of read-ahead space is insufficient in the cache buffer used for a one-time read-ahead. When the full-hit count is larger, the size of read-ahead space is reduced, based on an assumption that the size of read-ahead space is too large.
In addition, there is also a proposal of a disk controller which divides the cache memory into a plurality of cache segments and performs data transfer in terms of cache segments. In the proposal, the number of divisions of the cache memory is changed to expand the capacity of a cache segment when data transfer of an amount of data exceeding the capacity of the cache segment is requested for more than a predetermined count, according to the history of the amount of data transferred.
Furthermore, there is a proposal of grouping data sets in order to destage the data sets from the cache memory to an auxiliary storage device, and writing the grouped data sets to an unallocated data accumulation area which is closest to the physical position of the read/write head of the auxiliary storage device.
For example, see Japanese Laid-Open Patent Publications No. 8-272689, No. 7-319771, and No. 6-44137.
It is conceivable to group data sets having relationship (e.g., very likely to be sequentially accessed) and arrange them in a continuous area on a storage device (e.g., disk device etc.). This is because data sets may be read ahead more effectively than when arranged in a discontinuous area. Therefore, it is conceivable to group data sets which are not arranged continuously on the storage device but may be accessed in association with one another, using relationship-related information (e.g., access history to a plurality of data sets).
In this case, the more relationship-related information is used, the higher the precision of grouping rises. However, the amount of computation increases according to the amount of the relationship-related information for use, and therefore there is a need to suppress the amount of information to a certain degree in order to prevent occurrence of overhead of data arrangement on the storage device. When, on the other hand, insufficient relationship-related information for use results in reduced precision of grouping of data arrangement, which restricts efficiency degree of data access by grouping.